Centralized computing architecture continues the fiction that began with mainframe computers in the 1950s that all computation can be wholly accomplished by a single computer system. This architecture assumes that all resources are local to the computer system. All resources are addressed, discovered, loaded, used, and freed (and all are assumed to exist) inside a single computer system. Today and for the foreseeable future, however, resources—and with the popularity of the Internet, user data—are scattered across a multiplicity of computer systems, often in different trust domains, and each with its own security policy. The centralized computing architecture of the past has many problems that continue to the present day. FIG. 1 illustrates some of these problems in greater detail.
A mainframe computer 104 is designed to handle intensive computational tasks. See FIG. 1. Mainframe computers, such as the mainframe computer 104, are characterized by their ability to simultaneously support many users connected to the computer by terminals. The name is derived from “main frame,” the cabinet originally used to house the processing unit of such computers. A number of nodes 102A-102D are coupled to the mainframe computer 104. A node is a device, such as client computers 102A-C, a shared printer 102D, or other devices that are connected to a network 100 and are capable of communicating with other network devices. Suppose node 102A wishes to communicate with node 102D and node 102B wishes to communicate with node 102C. Because nodes 102A-102D are all local to the mainframe computer 104, the mainframe computer 104 has a global view over these nodes 102A-102D and is capable of knowing which of these nodes are available for communication. For example, if both nodes 102A, 102D are available, the mainframe computer 104 allows communication to occur between nodes 102A, 102D. Similarly, if nodes 102B, 102C are available, the mainframe computer 104 allows nodes 102B, 102C to communicate with one another. The centralized computing architecture of the mainframe computer 104 permits the entire problem of matching nodes that can communicate with one another to be seen at once, and matchings between communicable nodes can be found in no time at all.
Consider a scenario in which the mainframe computer 104 were to be absent from the network 100. In this case, the problem of matching one node to another node for communication seems insurmountable. All that a node, such as nodes 102A-102D, would see is its immediate neighbors. For example, node 102A may see only node 102B or node 102D, but not node 102C. Suppose that node 102B commits early to node 102A for communication and correspondingly node 102C commits early to node 102D for communication. Because of such early commitments, nodes 102B, 102C do not see each other as a potential match for communication. Suppose further that instead of committing to node 102B by node 102A and node 102C by node 102D, node 102A proceeds to connect with node 102D for communication. A deadly embrace or a deadlock has arisen, which is a situation that occurs when two programs, devices, or nodes (such as nodes 102B, 102C) are each waiting for a response from node 102A, 102D before continuing. Of course, no responses will ever be received from nodes 102A, 102D because nodes 102A, 102D have already connected together for communication to the detriment of nodes 102B, 102C.
The centralized computing architecture impedes the growing decentralized architecture of the Internet, where, as discussed above, user data is scattered across a multiplicity of computer systems. Another problem has to do with the dynamic nature of the decentralized architecture of the Internet. Additional nodes that may come into existence, hence growing the network 100 dynamically. This complicates the ability of the network 100 to match available nodes to one another so that communication can occur between two nodes in the presence of the dynamic introduction of nodes. To avoid deadlock, any node that can be matched should be matched.
In sum, centralized computing architectures do not work well for large-scale computer systems, such as the Internet, that are decentralized. Deadlocks may occur when nodes cannot find other nodes for communication even though they are available and willing to communicate. Without a protocol that can suitably work in a dynamic, decentralized computing environment and coordinate the matching of dynamic, decentralized nodes that allow communication to occur, users may eventually no longer trust the network 100 to provide a desired computing experience, and demand for the network 100 will diminish over time in the marketplace. Thus, what is needed is a matching method and system for communicable nodes in a dynamic, decentralized computing environment while avoiding or reducing the problems discussed above.